#pragma once

namespace mgfx
{
	typedef int TextureID;
	typedef int ShaderID;

	class SSAO
	{
	public:
		SSAO(bool fullRes = false);
		~SSAO();

		void render(const XMFLOAT4X4 & projectionMatrix, TextureID depthRT, TextureID normalRT, TextureID specPowRT);

		TextureID FinalRenderTarget;
	private:
		TextureID mRenderTarget0;
		TextureID mRenderTarget1;
		TextureID mDepthRT;

		TextureID mTexRandom4x4;

		bool mFullRes;

		uint mScreenWidth;
		uint mScreenHeight;

		uint mEffectWidth;
		uint mEffectHeight;

		ShaderID mShaderBlurV;
		ShaderID mShaderBlurH;
		ShaderID mShaderSSAO;
		ShaderID mShaderDepthDownsample;

	};
}